본 게시글의 원문은 Yann Debray의 MATLAB with Python Book 입니다. 해당 책은 MIT 라이센스를 따르기 때문에 개인적으로 번역하여 재배포 합니다. 본 포스팅에는 추후 유료 수익을 위한 광고가 부착될 수도 있습니다.

MIT License

Copyright (c) 2023 Yann Debray

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

본 게시물에서 활용된 소스 코드들은 모두 Yann Debray의 GitHub Repo에서 확인할 수 있습니다.

8.1. MATLAB Online에서 Python 패키지 얻기

MATLAB Online은 Python과 함께 MATLAB을 데모하기 위한 훌륭하게 사전 구성된 환경입니다. 제가 MATLAB Online 제품 팀에 합류한 후(2023년 중반) 이 말을 하는 것이 아니라, 2022년부터 Heather와 함께 MATLAB EXPO와 같은 대규모 공개 행사나 고객 전용 실습 워크숍을 위해 이를 사용해왔습니다. 이는 MATLAB 및 Python 환경을 설정하는 데 첫 30분을 낭비하지 않도록 해줍니다(3장 참조). 왜냐하면 Python 3가 이미 설치되어 있기 때문입니다.

그러나 한 가지 문제가 있습니다: 이 멋진 온라인 환경을 이중 언어 워크플로우에 생산적으로 사용하지 못하게 한 것은 Python 패키지의 부족과 환경을 맞춤화할 수 있는 방법의 부재였습니다. 저는 당연히 이 제한을 극복할 방법을 찾아보았고, 패키지 소스를 압축 파일로 업로드하고 MATLAB Online에서 이를 압축 해제하는 방법을 시도했습니다. 그러나 Numpy와 같은 기본 패키지의 경우 이미 7,000개 이상의 파일을 디스크에 기록해야 했습니다(압축 해제 시 50MB에 불과). 그래서 시간이 좀 걸립니다… 그러다가 최근에 ChatGPT 코드 해석기가 작동하는 방식을 살펴본 후(현재는 고급 데이터 분석이라고 불림), 원격 머신에 Python Wheel을 가져와 설치할 수 있을 것이라는 것을 깨달았습니다. Python Wheels는 Python 패키지를 배포하는 방법입니다. 이들은 zip 파일과 유사하지만, 패키지 설치에 필요한 모든 정보(코드, 종속성, 메타데이터 포함)를 포함하고 있습니다. Wheel은 일반적으로 pip 패키지 관리자와 함께 사용됩니다.

pip Wheel을 실행 파일로 사용할 수 있다는 것을 이해한 후, MATLAB Online에서 pip를 활성화하려면 pip wheel을 가져와 다음 시스템 명령을 사용하는 것만 하면 됩니다:

>> !python pip.whl/pip --version
pip 23.3 from /MATLAB Drive/pip.whl/pip (python 3.10)

간단한 설정 파일을 만들 수 있습니다 (setuppip.m):

piploc = "/tmp/";
pipwhlname = getwheel("pip");
copyfile(pipwhlname, piploc+"pip.whl")
disp("pip set up in folder: "+piploc)

그리고 Wheel을 가져오는 코드를 함수로 감쌀 수 있습니다:

function whlname = getwheel(pkg)
url = "https://pypi.org/pypi/" + pkg + "/json";
jason = webread(url);
urlwhl = jason.urls(1).url;
[~, filename, fileext] = fileparts(urlwhl);
whlname = [filename fileext];
websave(whlname,urlwhl);
end